from flask import Flask, request, jsonify, render_template
import os
from openai import OpenAI

app = Flask(__name__)

client = OpenAI(
    api_key="",
    base_url="https://api.lkeap.cloud.tencent.com/v1"
)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/generate_recommendation', methods=['POST'])
def generate_recommendation():
    print("=== 开始处理请求 ===")
    try:
        data = request.json
        print("接收到的数据:", data)
        
        if not data:
            print("错误：未接收到数据")
            return jsonify({
                'success': False,
                'error': '未接收到数据'
            }), 400
        
        # 构建提示词
        prompt = f"""
        作为心血管健康管理专家，请根据以下患者信息生成个性化生活方式建议：
        
        基本信息：
        - 年龄：{data.get('age')}岁
        - 身高：{data.get('height')}cm
        - 体重：{data.get('weight')}kg
        - BMI：{data.get('bmi')}
        - 体脂率：{data.get('bodyFat')}%
        - 血压：{data.get('systolic')}/{data.get('diastolic')} mmHg
        - 心率：{data.get('heartRate')}次/分
        
        活动能力：
        - 基本日常生活活动能力：{data.get('basicActivity')}
        - 工具性日常生活活动能力：{data.get('instrumentalActivity')}
        
        既往史：
        - 高血压：{data.get('hypertension')}
        - 冠心病：{data.get('coronaryDisease')}
        - 心力衰竭：{data.get('heartFailure')}
        - 糖尿病：{data.get('diabetes')}
        - 高血脂：{data.get('hyperlipidemia')}
        - 当前用药：{data.get('currentMedication')}
        
        饮食习惯：
        - 饮食偏好：{data.get('dietPreference')}
        - 饮食禁忌：{data.get('dietaryRestrictions')}
        
        心理状态：
        - 焦虑：{data.get('anxiety')}
        - 抑郁：{data.get('depression')}
        - 改变动机：{data.get('motivation')}
        - 睡眠质量：{data.get('sleepQuality')}
        
        生活习惯：
        - 吸烟：{data.get('smoking')}
        - 饮酒：{data.get('drinking')}
        - 工作性质：{data.get('workType')}
        
        家族史：
        - 心血管疾病家族史：{data.get('familyHistory')}
        
        
        """
        
        print("生成的提示词:", prompt)
        print("正在调用API...")
        
        completion = client.chat.completions.create(
            model="deepseek-r1",
            messages=[
                {'role': 'user', 'content': prompt}
            ]
        )
        
        recommendation = completion.choices[0].message.content
        print("API返回的建议:", recommendation)
        
        return jsonify({
            'success': True,
            'recommendation': recommendation
        })
    except Exception as e:
        print("发生错误:", str(e))
        print("错误类型:", type(e))
        import traceback
        print("详细错误信息:", traceback.format_exc())
        return jsonify({
            'success': False,
            'error': f'生成建议时出错: {str(e)}'
        }), 500

# 添加一个测试路由
@app.route('/test', methods=['GET'])
def test():
    return jsonify({
        'success': True,
        'message': 'API is working'
    })

# 添加错误处理路由
@app.errorhandler(500)
def internal_error(error):
    return jsonify({
        'success': False,
        'error': '服务器内部错误'
    }), 500

@app.errorhandler(404)
def not_found_error(error):
    return jsonify({
        'success': False,
        'error': '请求的资源不存在'
    }), 404

if __name__ == '__main__':
    app.run(debug=True, port=5000) 
